Sheet1.csv

canon/registries/T0_Trade_Good [DRAFT v0.1]/Sheet1.csv

43 rows

good_idgood_name_textstring_statusregion_refgood_classera_attestedexchange_medium_reftradeablesellablequest_or_keychapter_gate_mincare_tiersource_refnotesmass_classhardnessfragilityflexibilityderived_from
TG_0001placeholderflores_islandtextile_ikat~1200 CEXM_0002TRUETRUEFALSECH_02standard_source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_
TG_0002placeholderflores_islandtextile_songket~1200 CEXM_0002TRUETRUEFALSECH_02standard_source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_
TG_0003placeholderflores_islandmetallophone_gong~1200 CEXM_0002TRUETRUEFALSECH_02elevated_source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natuheavyfirmdurablesemimass<=DEFAULTED:metallophone_bronze(ASHBY2011) via T0_Trade_Good.good_class~'metallophone_gong' | hard<=DEFAULTED:metallophone_bronze(ASHBY2011) via T0_Trade_Good.good_class~'metallophone_gong' | frag<=DEFAULTED:metallophone_bronze(ASHBY2011) via T0_Trade_Good.good_class~'metallophone_gong' | flex<=
TG_0004placeholderflores_islandagricultural_surplus_highland~1200 CEXM_0002TRUETRUEFALSECH_02standard_source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumsoftbreakablesemimass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF
TG_0005placeholderbaliritual_craft~1200 CEXM_0003TRUETRUEFALSECH_04elevated_source/02_Tier_2_Region_Pages/bali.md s9 (Minerals Resources and Trade Goods)examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumfirmdurablesemimass<=DEFAULTED:hardwood_timber(FPL2010+WEGST2004) via T0_Trade_Good.good_class~'ritual_craft' | hard<=DEFAULTED:hardwood_timber(FPL2010+WEGST2004) via T0_Trade_Good.good_class~'ritual_craft' | frag<=DEFAULTED:hardwood_timber(FPL2010+WEGST2004) via T0_Trade_Good.good_class~'ritual_craft' | flex<=DEF
TG_0006placeholderbalitextile~1200 CEXM_0003TRUETRUEFALSECH_04standard_source/02_Tier_2_Region_Pages/bali.md s9 (Minerals Resources and Trade Goods)examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_
TG_0007placeholderbaliagricultural_surplus~1200 CEXM_0003TRUETRUEFALSECH_04standard_source/02_Tier_2_Region_Pages/bali.md s9 (Minerals Resources and Trade Goods)examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumsoftbreakablesemimass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF
TG_0008placeholdersumatra_javaforest_produce~1200 CEXM_0004TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cottonexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilesemimass<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'forest_produce' | hard<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'forest_produce' | frag<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'forest_produce' | flex<=DEFAULTED:herba
TG_0009placeholdersumatra_javamineral_sulfur~1200 CEXM_0004TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cottonexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilerigidmass<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_Trade_Good.good_class~'sulfur' | hard<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_Trade_Good.good_class~'sulfur' | frag<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_Trade_Good.good_class~'sulfur' | flex<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_T
TG_0010placeholdersumatra_javamineral_caldera_tuff~1200 CEXM_0004TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cottonexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumfirmbreakablerigidmass<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good_class~'tuff' | hard<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good_class~'tuff' | frag<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good_class~'tuff' | flex<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good
TG_0011placeholdersumatra_javaimported_ware~1200 CEXM_0004TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cottonexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumbrittlefragilerigidmass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'impor
TG_0012placeholdersumatra_javatextile_cotton~1200 CEXM_0004TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cottonexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_
TG_0013placeholderangkor_khmeragricultural_surplus_rice~1200 CEXM_0005TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumsoftbreakablesemimass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF
TG_0014placeholderangkor_khmeraromatic_wood_agarwood~1200 CEXM_0005TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightfirmbreakablerigidmass<=DEFAULTED:aromatic_resinous_wood(FPL2010) via T0_Trade_Good.good_class~'aromatic_wood_agarwood' | hard<=DEFAULTED:aromatic_resinous_wood(FPL2010) via T0_Trade_Good.good_class~'aromatic_wood_agarwood' | frag<=DEFAULTED:aromatic_resinous_wood(FPL2010) via T0_Trade_Good.good_class~'aromatic_wood_
TG_0015placeholderangkor_khmerspice~1200 CEXM_0005TRUETRUEFALSECH_05standard_source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilesemimass<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | hard<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | frag<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | flex<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice
TG_0016placeholderangkor_khmerivory~1200 CEXM_0005TRUETRUEFALSECH_05elevated_source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumfirmdurablesemimass<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | hard<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | frag<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | flex<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory'
TG_0017placeholdersri_lankagem~1200 CEXM_0006TRUETRUEFALSECH_06standard_source/02_Tier_2_Region_Pages/sri_lanka.md s9 [SRC_00263, p. 206]: the long-range network, the popularization of metallic currency, and the guilds for distribution and exchangeexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightbrittlefragilerigidmass<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | hard<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | frag<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | flex<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem'
TG_0018placeholdersri_lankaspice~1200 CEXM_0006TRUETRUEFALSECH_06standard_source/02_Tier_2_Region_Pages/sri_lanka.md s9 [SRC_00263, p. 206]: the long-range network, the popularization of metallic currency, and the guilds for distribution and exchangeexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilesemimass<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | hard<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | frag<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | flex<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice
TG_0019placeholdersri_lankaimported_ware~1200 CEXM_0006TRUETRUEFALSECH_06standard_source/02_Tier_2_Region_Pages/sri_lanka.md s9 [SRC_00263, p. 206]: the long-range network, the popularization of metallic currency, and the guilds for distribution and exchangeexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumbrittlefragilerigidmass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'impor
TG_0020placeholdersouth_indiacrucible_steel_ingot~1200 CEXM_0007TRUETRUEFALSECH_07standard_source/02_Tier_2_Region_Pages/south_india.md s9: 'diamonds and crucible-steel ingots are weighed together and carried west toward Persia'; TRADE_04 Herbalism's first home through the Ayurvedic and Siddha pharmacopoeiaexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natuheavyharddurablesemimass<=DEFAULTED:steel_forged(ASHBY2011) via T0_Trade_Good.good_class~'crucible_steel' | hard<=DEFAULTED:steel_forged(ASHBY2011) via T0_Trade_Good.good_class~'crucible_steel' | frag<=DEFAULTED:steel_forged(ASHBY2011) via T0_Trade_Good.good_class~'crucible_steel' | flex<=DEFAULTED:steel_forged(ASHBY20
TG_0021placeholdersouth_indiagem_diamond~1200 CEXM_0007TRUETRUEFALSECH_07standard_source/02_Tier_2_Region_Pages/south_india.md s9: 'diamonds and crucible-steel ingots are weighed together and carried west toward Persia'; TRADE_04 Herbalism's first home through the Ayurvedic and Siddha pharmacopoeiaexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightbrittlefragilerigidmass<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem_diamond' | hard<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem_diamond' | frag<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem_diamond' | flex<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.goo
TG_0022placeholdersouth_indiapharmacopoeia_preparation~1200 CEXM_0007TRUETRUEFALSECH_07elevated_source/02_Tier_2_Region_Pages/south_india.md s9: 'diamonds and crucible-steel ingots are weighed together and carried west toward Persia'; TRADE_04 Herbalism's first home through the Ayurvedic and Siddha pharmacopoeiaexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilesemimass<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'pharmacopoeia_preparation' | hard<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'pharmacopoeia_preparation' | frag<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'pharmacopoeia_pre
TG_0023placeholderswahili_coastgold~1200 CEXM_0008TRUETRUEFALSECH_08standard_source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian waresexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natuheavysoftdurableflexiblemass<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | hard<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | frag<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | flex<=DEFAULTED:native_gold(KLEIN2007+A
TG_0024placeholderswahili_coastivory~1200 CEXM_0008TRUETRUEFALSECH_08elevated_source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian waresexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumfirmdurablesemimass<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | hard<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | frag<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | flex<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory'
TG_0025placeholderswahili_coastceramic_import_sgraffiato~1200 CEXM_0008TRUETRUEFALSECH_08standard_source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian waresexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumbrittlefragilerigidmass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'cer
TG_0026placeholderswahili_coastceramic_import_stoneware~1200 CEXM_0008TRUETRUEFALSECH_08standard_source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian waresexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumbrittlefragilerigidmass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'cer
TG_0027placeholderswahili_coasttextile_import~1200 CEXM_0008TRUETRUEFALSECH_08standard_source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian waresexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_
TG_0028placeholderethiopiaincense~1200 CEXM_0009TRUETRUEFALSECH_09standard_source/02_Tier_2_Region_Pages/ethiopia.md s9 [SRC_00254, p. 34]: the Red Sea economy and Adulis as a flourishing port in close commercial relations with Arabia and beyondexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilerigidmass<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_Good.good_class~'incense' | hard<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_Good.good_class~'incense' | frag<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_Good.good_class~'incense' | flex<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_
TG_0029placeholderethiopiaivory~1200 CEXM_0009TRUETRUEFALSECH_09elevated_source/02_Tier_2_Region_Pages/ethiopia.md s9 [SRC_00254, p. 34]: the Red Sea economy and Adulis as a flourishing port in close commercial relations with Arabia and beyondexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumfirmdurablesemimass<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | hard<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | frag<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | flex<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory'
TG_0030placeholderethiopiaimported_ware~1200 CEXM_0009TRUETRUEFALSECH_09standard_source/02_Tier_2_Region_Pages/ethiopia.md s9 [SRC_00254, p. 34]: the Red Sea economy and Adulis as a flourishing port in close commercial relations with Arabia and beyondexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumbrittlefragilerigidmass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'impor
TG_0031placeholdercentral_africa_congoforest_produce_honey~1200 CEXM_0011TRUETRUEFALSECH_11standard_source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumsoftfragileflexiblemass<=DEFAULTED:honey_viscous(ASHBY2011) via T0_Trade_Good.good_class~'forest_produce_honey' | hard<=DEFAULTED:honey_viscous(ASHBY2011) via T0_Trade_Good.good_class~'forest_produce_honey' | frag<=DEFAULTED:honey_viscous(ASHBY2011) via T0_Trade_Good.good_class~'forest_produce_honey' | flex<=DEFAULTED
TG_0032placeholdercentral_africa_congoforest_produce_meat~1200 CEXM_0011TRUETRUEFALSECH_11standard_source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumsoftfragileflexiblemass<=DEFAULTED:meat_fresh(WEGST2004) via T0_Trade_Good.good_class~'forest_produce_meat' | hard<=DEFAULTED:meat_fresh(WEGST2004) via T0_Trade_Good.good_class~'forest_produce_meat' | frag<=DEFAULTED:meat_fresh(WEGST2004) via T0_Trade_Good.good_class~'forest_produce_meat' | flex<=DEFAULTED:meat_fresh(
TG_0033placeholdercentral_africa_congobark_cloth~1200 CEXM_0011TRUETRUEFALSECH_11standard_source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Good.good_class~'bark_cloth' | hard<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Good.good_class~'bark_cloth' | frag<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Good.good_class~'bark_cloth' | flex<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Goo
TG_0034placeholdercentral_africa_congoiron_spear_point~1200 CEXM_0011TRUETRUEFALSECH_11elevated_source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natuheavyharddurablesemimass<=DEFAULTED:bloomery_iron(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'iron' | hard<=DEFAULTED:bloomery_iron(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'iron' | frag<=DEFAULTED:bloomery_iron(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'iron' | flex<=DEFAULTED:bloomery_iron(
TG_0035placeholderwest_africagold_dust~1200 CEXM_0012TRUETRUEFALSECH_12elevated_source/02_Tier_2_Region_Pages/west_africa.md s9: the internal production-and-market layer, gold dust weighed against Akan brass goldweights at SC_CH12_akan_goldweightsexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natuheavysoftdurableflexiblemass<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | hard<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | frag<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | flex<=DEFAULTED:native_gold(KLEIN2007+A
TG_0036placeholderwest_africatextile~1200 CEXM_0012TRUETRUEFALSECH_12standard_source/02_Tier_2_Region_Pages/west_africa.md s9: the internal production-and-market layer, gold dust weighed against Akan brass goldweights at SC_CH12_akan_goldweightsexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftbreakableflexiblemass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_
TG_0037placeholderwest_africaagricultural_surplus~1200 CEXM_0012TRUETRUEFALSECH_12standard_source/02_Tier_2_Region_Pages/west_africa.md s9: the internal production-and-market layer, gold dust weighed against Akan brass goldweights at SC_CH12_akan_goldweightsexamples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumsoftbreakablesemimass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF
TG_0038placeholdersouth_africamineral_ochre~1200 CEXM_0013TRUETRUEFALSECH_13elevated_source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragilerigidmass<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.good_class~'ochre' | hard<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.good_class~'ochre' | frag<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.good_class~'ochre' | flex<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.g
TG_0039placeholdersouth_africaostrich_eggshell~1200 CEXM_0013TRUETRUEFALSECH_13standard_source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightbrittlefragilerigidmass<=DEFAULTED:eggshell(CURREY2002+ASHBY2011) via T0_Trade_Good.good_class~'ostrich_eggshell' | hard<=DEFAULTED:eggshell(CURREY2002+ASHBY2011) via T0_Trade_Good.good_class~'ostrich_eggshell' | frag<=DEFAULTED:eggshell(CURREY2002+ASHBY2011) via T0_Trade_Good.good_class~'ostrich_eggshell' | flex<=DEF
TG_0040placeholdersouth_africahide_kaross~1200 CEXM_0013TRUETRUEFALSECH_13standard_source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftdurableflexiblemass<=DEFAULTED:hide_leather(WEGST2004) via T0_Trade_Good.good_class~'hide_kaross' | hard<=DEFAULTED:hide_leather(WEGST2004) via T0_Trade_Good.good_class~'hide_kaross' | frag<=DEFAULTED:hide_leather(WEGST2004) via T0_Trade_Good.good_class~'hide_kaross' | flex<=DEFAULTED:hide_leather(WEGST2004) via T
TG_0041placeholdersouth_africaceramic_clay_pot~1200 CEXM_0013TRUETRUEFALSECH_13standard_source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natumediumbrittlefragilerigidmass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic' | flex<=
TG_0042placeholdersouth_africatobacco~1200 CEXM_0013TRUETRUEFALSECH_13standard_source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natulightsoftfragileflexiblemass<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good.good_class~'tobacco' | hard<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good.good_class~'tobacco' | frag<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good.good_class~'tobacco' | flex<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good
TG_0043placeholdersouth_africagold~1200 CEXM_0013TRUETRUEFALSECH_13standard_source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco'examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natuheavysoftdurableflexiblemass<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | hard<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | frag<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | flex<=DEFAULTED:native_gold(KLEIN2007+A

Generated by harness/site/structure_site.py — the URL path is the repo path. review root